// 题目要求：
// 题目给定一个字符串，使用哈夫曼编码的方式编码，返回编码的长度

// 解题思路：
// 1. 统计字符出现的次数
// 2. 建立小根堆，将频次放进堆里
// 3. 每次弹出两个元素，将两个元素合并，再放到堆中，同时使用 ret 记录编码长度
// 4. 当堆中只剩一个元素的时候，返回编码长度

import java.util.*;

public class HuffmanCoding2 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);

        while(in.hasNext()){
            char[] s = in.next().toCharArray();
            int n = s.length;
            Map<Character, Integer> hash = new HashMap<>();
            PriorityQueue<Integer> heap = new PriorityQueue<>();

            // 统计每个字符出现的次数
            for(int i = 0; i < n; i++){
                hash.put(s[i], hash.getOrDefault(s[i], 0) + 1);
            }

            // 将字符数量存放到堆中
            for(Map.Entry<Character, Integer> entry : hash.entrySet()){
                int val = entry.getValue();
                heap.offer(val);
            }

            int ret = 0;

            while(heap.size() >= 2){
                int left = heap.poll();
                int right = heap.poll();

                ret += left;
                ret += right;
                heap.offer(left + right);
            }

            System.out.println(ret);
        }
    }
}
